package com.linchong.linkedlist.medium;

import com.linchong.linkedlist.basic.BasicLinkList;

/**
 * @author linchong
 * @version 1.0
 * @Date: 2020-12-10 0:02
 * @Description: RemoveDuplicatesFromSortedListII$82. 删除排序链表中的重复元素 II
 * 给定一个排序链表，删除所有含有重复数字的节点，只保留原始链表中 没有重复出现 的数字。
 * <p>
 * 示例 1:
 * <p>
 * 输入: 1->2->3->3->4->4->5
 * 输出: 1->2->5
 * 示例 2:
 * <p>
 * 输入: 1->1->1->2->3
 * 输出: 2->3
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii
 */
@SuppressWarnings("unused")
public class RemoveDuplicatesFromSortedListII extends BasicLinkList {

	public ListNode deleteDuplicates(ListNode head) {
		if(head==null||head.next==null){
			return head;
		}
		//临时头节点
		ListNode root = new ListNode(0);
		root.next = head;
		//指向创建新元素
		ListNode tmp = root;
		while(tmp.next!=null){
			//判断cur这个指针是否重复
			ListNode cur = tmp.next;
			if(cur.next==null){
				break;
			}
			ListNode pNext = cur.next;
			if(pNext.val == cur.val){
				while(pNext!=null&&pNext.val==cur.val){
					pNext = pNext.next;
				}
				tmp.next = pNext;
			}else{
				//循环迭代值
				tmp = tmp.next;
			}
		}
		return root.next;
	}
}
